/*
* @Author: tomystery
* @Date:   2017-09-10 16:18:15
* @Last Modified by:   tomystery
* @Last Modified time: 2017-09-11 17:50:32
*/
'use strict';
require('./index.css');
require('page/common/nav/index.js');
require('page/common/header/index.js');
require('util/pagination/index.js');
var _mm=require('util/mm.js');
var _product=require('service/product-service.js');
var templateIndex=require('./index.string');
var Pagination=require('util/pagination/index.js');

var page={
	data:{
		listParam:{
			keyword:_mm.getUrlParam('keyword') ||'',
			categoryId:_mm.getUrlParam('categoryId') ||'',
			orderBy:_mm.getUrlParam('orderBy')||'default',
			pageNum:_mm.getUrlParam('pageNum')||1,//当前页
			pageSize:_mm.getUrlParam('pageSize')||2 //
		}

	},
	init:function(){
		this.onLoad();
		this.bindEvent();
	},
	onLoad:function(){
		this.loadList();

	},
	bindEvent:function(){
		var _this=this;
		//排序的点击事件
		$('.sort-item').click(function(){
			var $this=$(this);
			//点击价格排序键后设置页码为1
			_this.data.listParam.pageNum=1;
		
			//点击默认排序
			if($this.data('type')==='default'){
				//已经是active
				if($this.hasClass('active')){
					return;
				}else{
					$this.addClass('active').siblings('.sort-item').removeClass('active asc desc');
					_this.data.listParam.orderBy='default';
				}
			}
			//点击价格排序
			else if($this.data('type')==='price'){
				$this.addClass('active').siblings('.sort-item')
					 .removeClass('active asc desc');
					 if(!$this.hasClass('asc')){
					 	$this.addClass('asc').removeClass('desc');
					 	_this.data.listParam.orderBy='price_asc';
					 }else{
					 	$this.addClass('desc').removeClass('asc');
					 	_this.data.listParam.orderBy='price_desc';
					 }
			}
			//重新加载列表
			_this.loadList();

		});
	},
	//加载list数据
	loadList:function(){
		var _this=this,
		listHtml='',
		listParam=this.data.listParam,
		$pListCon=$('.p-list-con');
		$pListCon.html('<div class="loading"></div>');
		//删除参数中不必要的字段
		listParam.categoryId
		? (delete listParam.keyword):(delete listParam.categoryId);
		//请求接口
		_product.getProductList(listParam,function(res){
			
			listHtml=_mm.renderHtml(templateIndex,{

				list:res.list
			});
			$('.p-list-con').html(listHtml);
			_this.loadPagination({
				sum:res.pages,//总的页数
				pageNum:res.pageNum,//当前的选中页面
				pageSize: res.pageSize,
                // 提供每页显示数码的选择
                selectOption: [2, 5, 20],
                // 当前页面的前后页码数量
                pageRange: 4,
                // 首页的字符
                startPageName: '首页',
                // 尾页的字符
                endPageName: '尾页',
				
			});

		},function(errMsg){
			_mm.errorTips(errMsg);

		});
	},

	//加载分页信息
	loadPagination:function(pageInfo){
		var _this=this;
	this.pagination ? '':(this.pagination=new Pagination());//假设这个组件存在，把它new出来
	//封装一个组件有类和对象2种方式，这两种方式的区别：
	//如果有两个组件，通过new的方式则会使得两个组件相互干扰，但是通过对象的方式则不会
	this.pagination.render($.extend({},pageInfo,{
		container:$('.pagination'),
		onSelectPage:function(pageNum){
			var data = _this.getOptions({
				pageNum: pageNum,
				pageSize: $('#pg-seId').data('page-size'),
			})
			_this.loadList();
		}
	}));
	},
	getOptions: function (pagesInfo) {
        var result = $.extend(this.data.listParam, pagesInfo)
        return result
    }
};
$(function(){
	page.init();
})